<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN">
<HTML><HEAD>
<TITLE>IBM Visualization Data Explorer Programmer&#39;s Reference</TITLE>

<META HTTP-EQUIV="abstract" CONTENT="IBM Visualization Data Explorer
Programmer&#39;s Reference">
<META HTTP-EQUIV="contact" CONTENT="IBM Visualization Data Explorer
(ibmdx@watson.ibm.com)">
<META HTTP-EQUIV="owner" CONTENT="IBM Visualization Data Explorer
(ibmdx@watson.ibm.com)">
<META HTTP-EQUIV="updated" CONTENT="Tue, 16 Sep 1997 ">
<META HTTP-EQUIV="review" CONTENT="Fri, 14 Aug 1998 ">

<META HTTP-EQUIV="keywords" CONTENT="GRAPHICS VISUALIZATION VISUAL PROGRAM DATA
MINING">
<meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
</HEAD><BODY BGCOLOR="#FFFFFF">

<A NAME="Top_Of_Page"></A>
<H1>IBM Visualization Data Explorer Programmer&#39;s Reference</H1>
<B>&#91; <A HREF="#Bot_Of_Page">Bottom of Page</A> &#124; <A
HREF="progu270.htm">Previous Page</A> &#124; <A HREF="progu272.htm">Next
Page</A> &#124; <A HREF="../proguide.htm#ToC">Table of Contents</A> &#124; <A
HREF="progu097.htm#PToC20">Partial Table of Contents</A> &#124; <A
HREF="progu344.htm#HDRINDEX_START">Index</A> &#93;</B><HR><P>
<H3><A NAME="HDRDXPP" HREF="progu097.htm#PToC_365">DXProcessParts</A></H3>
<A NAME="IDX1959"></A>
<A NAME="IDX1960"></A>
<P><STRONG>Function</STRONG>
<P>
Applies a function to every constituent Field (part) of a specified
Object.
<P><STRONG>Syntax</STRONG>
<BR>
<TT><STRONG><BR>
&#35;include &lt;dx/dx.h&gt;<BR>
<P><BR>
Object DXProcessParts(Object object, Field (*process)(Field, Pointer, int),<BR>
                      Pointer args, int size, int copy, int preserve)<BR>
</STRONG></TT><BR>
<P><STRONG>Functional Details</STRONG>
<P>
<P>
If the input
<TT><STRONG>
Object
</STRONG></TT>
is a Field, this
routine returns the result of the
<TT><STRONG>
process
</STRONG></TT>
function on that Field.
<P>
If the input
<TT><STRONG>
Object
</STRONG></TT>
is a Group and
<TT><STRONG>
copy
</STRONG></TT>
is 1, this routine recursively makes a copy of the Group and
all subgroups.  In this case, the
order of the Fields in the Groups is preserved if
<TT><STRONG>
preserve
</STRONG></TT>
is 1.  If this is not required, set
<TT><STRONG>
preserve
</STRONG></TT>
to 0 and a more efficient
traversal algorithm will be used.
<P>
If the input
<TT><STRONG>
Object
</STRONG></TT>
is a Group and
<TT><STRONG>
copy
</STRONG></TT>
is 0, it
operates directly on the Groups of the input
<TT><STRONG>object</STRONG></TT>.
<P>
In either case, for every Field
<TT><STRONG>
f
</STRONG></TT>
that is a member of a Group,
it makes a call of the form
<TT><STRONG>process(f</STRONG></TT>, <TT><STRONG>args</STRONG></TT>,
<TT><STRONG>size)</STRONG></TT>
and places
the result of that call in the output in place of
<TT><STRONG>f</STRONG></TT>.  The
<TT><STRONG>
process
</STRONG></TT>
function is intended to return a Field which is the processed
version of input Field
<TT><STRONG>f</STRONG></TT>.
<P>
Regardless of the value of the
<TT><STRONG>
copy
</STRONG></TT>
parameter, the Field passed to the
<TT><STRONG>
process
</STRONG></TT>
function is the Field from the original Object and not a copy.
<P>
The <TT><STRONG>size</STRONG></TT> parameter specifies the size of the block
pointed to by <TT><STRONG>args</STRONG></TT>.
If <TT><STRONG>size</STRONG></TT> is nonzero, it makes a copy of the
argument block and places it in global memory before
passing it to <TT><STRONG>process</STRONG></TT>.
The argument must be in global memory because
<TT><STRONG>DXProcessParts</STRONG></TT> may run
in parallel;
however, if the pointer passed is, for example, just a pointer to an
Object that is already in global memory, then
<TT><STRONG>size</STRONG></TT> can be given as 0.
<TT><STRONG>args</STRONG></TT> should not contain pointers to local memory.
<P>
If the <TT><STRONG>process</STRONG></TT> function returns
<TT><STRONG>NULL</STRONG></TT>, and <TT><STRONG>preserve</STRONG></TT>
is 1 or the Field was part of a Series Group or was the
entire input Object, the <TT><STRONG>NULL</STRONG></TT>
return value is replaced with an empty Field.
<P><STRONG>Return Value</STRONG>
<P>
Returns the Object, a copy of the Object, or a processed version of it,
depending on the parameters; otherwise, it returns
<TT><STRONG>NULL</STRONG></TT> and sets an error code.
<P><STRONG>See Also</STRONG>
<P>
<TT><STRONG>
<A HREF="progu191.htm#HDRDXGP">DXGetPart</A>,
<A HREF="progu192.htm#HDRDXGPC">DXGetPartClass</A>,
<A HREF="progu320.htm#HDRDXSP">DXSetPart</A>
</STRONG></TT>
<P>
<A HREF="progu045.htm#HDRPRTS">"Parts"</A>.
<P><P>
<P><HR><B>&#91; <A HREF="#Top_Of_Page">Top of Page</A> &#124; <A
HREF="progu270.htm">Previous Page</A> &#124; <A HREF="progu272.htm">Next
Page</A> &#124; <A HREF="../proguide.htm#ToC">Table of Contents</A> &#124; <A
HREF="progu097.htm#PToC20">Partial Table of Contents</A> &#124; <A
HREF="progu344.htm#HDRINDEX_START">Index</A> &#93;</B> <br><b>&#91;<a
href="../allguide.htm">Data Explorer Documentation</a>&nbsp;&#124;&nbsp;<a
href="../qikguide.htm">QuickStart Guide</a>&nbsp;&#124;&nbsp;<a
href="../usrguide.htm">User&#39;s Guide</a>&nbsp;&#124;&nbsp;<a
href="../refguide.htm">User&#39;s Reference</a>&nbsp;&#124;&nbsp;<a
href="../proguide.htm">Programmer&#39;s Reference</a>&nbsp;&#124;&nbsp;<a
href="../insguide.htm">Installation and Configuration

Guide</a>&nbsp;&#93;</b><br><p><b>&#91;<a
href="http://www.research.ibm.com/dx">Data Explorer Home
Page</a>&#93;</b><p><HR ALIGN=LEFT WIDTH=600><b>&#91;<A
HREF="http://www.ibm.com/">IBM Home Page</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Orders/">Order</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Search/">Search</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Assist/">Contact IBM</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Legal/">Legal</A>&nbsp;&#93;</b><hr><p>
<A NAME="Bot_Of_Page"></A>
</BODY></HTML>
